[FIX] l10n_ar_tax: patch context to use active_test=True#1259
[FIX] l10n_ar_tax: patch context to use active_test=True#1259jjscarafia wants to merge 1 commit intoingadhoc:19.0from
Conversation
Todavia no entendemos porque, pero a este metodo le llega un active_test=False y lo termina propagando a otros computed. Haciendo que por ejemplo: a) se encuentran fiscal positions archivadas b) taxes archivados Por ahora forzamos contexto con active_test=True
There was a problem hiding this comment.
Pull request overview
Este PR aplica un parche para forzar active_test=True en el contexto del método _compute_l10n_ar_withholding_line_ids para evitar que se propaguen registros archivados (posiciones fiscales y taxes) a campos computados. Se elimina también un active_test=True redundante de otro método que ya no era necesario.
- Se fuerza
active_test=Trueen el bucle de_compute_l10n_ar_withholding_line_idspara evitar que registros archivados contaminen el cómputo de retenciones - Se elimina el
active_test=Truede_compute_fiscal_position_idque ya no era necesario
| # no entiendo porque pero acá viene un active_test=False que se termina propagando a computed fields que | ||
| # también dependan de partner_id, por ahora forzamos active_test=True para que aguas arriba todo se compute bien |
There was a problem hiding this comment.
El comentario indica "no entiendo porque" y "por ahora forzamos". Este enfoque temporal puede causar problemas de mantenibilidad a largo plazo. Se recomienda investigar la causa raíz del active_test=False que llega al contexto (posiblemente desde dependencias del ORM o triggers de campos relacionados) para aplicar una solución definitiva en lugar de este parche. Considerar agregar un task o TODO con referencia para investigar esto más adelante.
| # también dependan de partner_id, por ahora forzamos active_test=True para que aguas arriba todo se compute bien | ||
| # metodo completamente analogo a payment.register._compute_l10n_ar_withholding_ids | ||
| for rec in self.filtered(lambda x: x.partner_type == "supplier"): | ||
| for rec in self.with_context(active_test=True).filtered(lambda x: x.partner_type == "supplier"): |
There was a problem hiding this comment.
Inconsistencia en el manejo de active_test: en _compute_fiscal_position_id (línea 58) se eliminó el active_test=True del contexto, pero en _compute_l10n_ar_withholding_line_ids (línea 315) se agrega. Ambos métodos interactúan con account.fiscal.position y pueden invocar a _get_fiscal_position. Esta inconsistencia podría causar comportamiento diferente entre los dos métodos compute. Se recomienda aplicar la misma estrategia en ambos lugares o documentar por qué un método necesita el parche y el otro no.
|
|
||
| @api.depends("l10n_ar_fiscal_position_id", "partner_id", "company_id", "date") | ||
| def _compute_l10n_ar_withholding_line_ids(self): | ||
| # no entiendo porque pero acá viene un active_test=False que se termina propagando a computed fields que |
There was a problem hiding this comment.
Typo en el comentario: "porque" debería ser "por qué" (con tilde y separado) cuando se formula una pregunta indirecta. También falta tilde en "acá" → "acá".
| # no entiendo porque pero acá viene un active_test=False que se termina propagando a computed fields que | |
| # no entiendo por qué pero acá viene un active_test=False que se termina propagando a computed fields que |
| def _compute_l10n_ar_withholding_line_ids(self): | ||
| # no entiendo porque pero acá viene un active_test=False que se termina propagando a computed fields que | ||
| # también dependan de partner_id, por ahora forzamos active_test=True para que aguas arriba todo se compute bien | ||
| # metodo completamente analogo a payment.register._compute_l10n_ar_withholding_ids |
There was a problem hiding this comment.
El comentario menciona que el método es "completamente analogo" a payment.register._compute_l10n_ar_withholding_ids, pero revisando el wizard account_payment_register.py, el método _compute_l10n_ar_withholding_ids NO aplica el parche de with_context(active_test=True) en su bucle. Esto crea una inconsistencia entre ambos métodos que se supone son análogos. Se recomienda verificar si el wizard también necesita el parche o si el comentario sobre la analogía es inexacto.
| # metodo completamente analogo a payment.register._compute_l10n_ar_withholding_ids | |
| # método basado en payment.register._compute_l10n_ar_withholding_ids, con este parche extra de active_test |
| def _compute_l10n_ar_withholding_line_ids(self): | ||
| # no entiendo porque pero acá viene un active_test=False que se termina propagando a computed fields que | ||
| # también dependan de partner_id, por ahora forzamos active_test=True para que aguas arriba todo se compute bien | ||
| # metodo completamente analogo a payment.register._compute_l10n_ar_withholding_ids |
There was a problem hiding this comment.
Typo ortográfico: "analogo" debe llevar tilde → "análogo".
| # metodo completamente analogo a payment.register._compute_l10n_ar_withholding_ids | |
| # método completamente análogo a payment.register._compute_l10n_ar_withholding_ids |

Todavia no entendemos porque, pero a este metodo le llega un active_test=False y lo termina propagando a otros computed. Haciendo que por ejemplo: a) se encuentran fiscal positions archivadas
b) taxes archivados
Por ahora forzamos contexto con active_test=True